home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Celestin Apprentice 7
/
Apprentice-Release7.iso
/
Environments
/
PowerLisp 2.01
/
Supplemental Documentation
/
Documentation
/
Preface SECOND EDITION
< prev
next >
Wrap
Text File
|
1995-03-23
|
11KB
|
175 lines
Preface
SECOND EDITION
Common Lisp has succeeded. Since publication of the first edition of this book
in 1984, many implementors have used it as a de facto standard for Lisp
implementation. As a result, it is now much easier to port large Lisp programs
from one implementation to another. Common Lisp has proved to be a useful and
stable platform for rapid prototyping and systems delivery in artificial
intelligence and other areas. WIth experience gained in using Common Lisp for
so many applications, implementors found no shortage of opportunities for
innovation. One of the important characteristics of Lisp is its good support
for experimental extension of the language; while Common Lisp has been stable,
it has not stagnated.
The 1984 definition of Common Lisp was imperfect and incomplete. In some cases
this was inadvertent: some odd boundary situation was overlooked and its
consequences not specified, or different passages in were conflict, or some
property of Lisp was so well-known and traditionally relied upon that I forgot
to write it down. In other cases the informal committee that was defining
Common Lisp could not settle on a solution, and therefore agreed to leave some
important aspect of the language unspecified rather than choose a less than
satisfactory definition. An example is error handling; 1984 Common Lisp had
plenty of ways to signal errors but no way for a program to trap or process
them.
Over the next year I collected reports of errors in the book and gaps in the
language. In December 1985, a group of implementors and users met in Boston to
discuss the state of Common Lisp. I prepared two lists for this meeting, one of
errata and clarifications that I thought would be relatively uncontroversial
(boy, was I wrong!) and one of more substantial changes I thought should be
considered and perhaps voted upon. Others also brought proposals to discuss. It
became clear to everyone that there was now enough interest in Common Lisp, and
dependence on its stability, that a more formal mechanism was needed for
managing changes to the language.
This realization led to the formation of X3J13, a subcommittee of ANSI
committee X3, to produce a formal American National Standard for Common Lisp.
That process is nearing completion. X3J13 has completed the bulk of its
technical work in rectifying the 1984 definition and codifying extensions to
that definition that have received widespread use and approval. A draft
standard is now being prepared; it will probably be available in 1990. There
will then be a period (required by ANSI) for public review. X3J13 must then
consider the comments it receives and respond appropriately. If the comments
result in substantial changes to the draft standard, multiple public review
periods may be required before the draft can be approved as an American
National Standard.
Fortunately, X3J13 has done an outstanding job of documenting its work. For
every change that came to a formal vote, a document was prepared that described
the problem to be solved and one or more solutions. For each solution there is
a detailed proposal for changing the language; a rationale; test cases that
distinguish the proposal from the status quo or from other proposals for
solving that problem; discussions of current practice, cost to implementors,
cost to users, cost of not adopting the proposal, benefits of adoption,
aesthetic criteria; and any relevant informal discussion that may have preceded
creation of the formal proposal. All of these proposal documents were made
available on-line as well as in paper form. By my count, by June 1989 some 186
such proposals were approved as language changes. (This count does not include
many proposals that came before the committee but were rejected.)
The purpose of this second edition is to bridge the gap between the first
edition and the forthcoming ANSI standard for Common Lisp. Because of the
requirement for formal public review, it will be some time yet before the ANSI
standard is final. This book in no way resembles the forthcoming standard
(which is being written independently by Kathy Chapman of Digital Equipment
Corporation with assistance from the X3J13 Drafting Subcommittee).
I have incorporated into this second edition a great deal of material based on
the votes of X3J13, in order to give the reader a picture of where the language
is heading. My purpose here is not simply to quote the X3J13 documents verbatim
but to paraphrase them and relate them to the structure of the first edition. A
single vote by X3J13 may be discussed in many parts of this book, and a single
passage of this book may be affected by many of the votes.
I wish to be very clear: this book is not an official document of X3J13, though
it is based on publicly available material produced by X3J13. In no way does
this book constitute a definitive description of the forthcoming ANSI standard.
The committee's decisions have been remarkably stable (it has rescinded earlier
decisions only two or three times), and I do not expect radical changes in
direction. Nevertheless, it is quite probable that the draft standard will be
substantively revised in response to editorial review or public comment. I have
therefore reported here on the actions of X3J13 not to inscribe them in stone,
but to make clear how the language of the first edition is likely to change. I
have tried to be careful in my wording to avoid saying ``the language has been
changed'' and to state simply that ``X3J13 voted at such-and-so time to make
the following change.''
Until the day when an official ANSI Common Lisp standard emerges, it is likely
that the 1984 definition of Common Lisp will continue to be used widely. This
book has been designed to be used as a reference both to the 1984 definition
and to the language as modified by the actions of X3J13.
It contains the entire text of the first edition of Common Lisp: The Language,
with corrections and minor editorial changes; however, more than half of the
material in this edition is new. All new material is identified by solid lines
in the left margin. Dotted lines in the left margin indicate material from the
first edition that applies to the 1984 definition but that has been modified by
a vote of X3J13. Modifications to these outmoded passages are explained by
preceding or following text (which will have a solid line in the margin). In
summary:
* To use the 1984 language definition, read all material that does not have
a solid line in the margin.
* To use the updated language definition, read everything, but be wary of
material with a dotted line in the margin.
At the end of the book is an index of the X3J13 votes, ordered by the
committee's internal code names (included to ease cross-reference to the X3J13
documents, which may be useful during the public review periods). References to
this list of votes appear as numbers in angle brackets; thus ``<14>'' refers to
the vote on issue number 14, whereas ``[14]'' refers to reference 14 in the
bibliography.
I have kept changes to the wording of the first-edition material to a minimum.
Obvious spelling and typographical errors have been corrected, and the entire
text has been edited to a uniform style of spelling and punctuation. (Note in
particular that the first edition used the spelling ``signalling'' but this
edition, in deference to the style decision of the X3J13 Drafting Subcommittee,
uses ``signaling.'') A few minor changes were made to accommodate typographical
or layout constraints. (For example, the word ``also'' has been deleted from
the first sentence of chapter 1, partly to make that paragraph look better and
partly to allow a better page break at the bottom of page 2.) In a very few
cases the first edition contained substantive errors that I could not in good
conscience correct silently; these have been flagged by paragraphs beginning
with the phrase Notice of correction.
The chapter and section numbering of this edition matches that of the first
edition, with the exception that a new section 7.9 has been interpolated. Four
new chapters (26-29) describe substantial changes approved by X3J13: an
extended loop macro, a pretty printer interface, the Common Lisp Object System,
and the Common Lisp Condition System.
X3J13, in the course of its work, formed a subcommittee to study whether
additional means of iteration should be standardized for use in Common Lisp,
for a great deal of existing practice in this area was not included in the
first edition because of lack of agreement in 1984. The X3J13 Iteration
Subcommittee produced reports on three possible facilities. One (loop) was
approved for inclusion in the forthcoming draft standard and is described in
chapter 26.
X3J13 expressed interest in the other two approaches (series and generators),
but the consensus as of January 1989 was that these other approaches were not
yet sufficiently mature or in sufficiently widespread use to warrant inclusion
in the draft Common Lisp standard at that time. However, the subcommittee was
directed to continue work on these approaches and X3J13 is open to the
possibility of standardizing them at a later date. Please note that I do not
wish the prejudge the question of whether X3J13 will ever choose to make the
other two proposals the subject of standardization. Nevertheless, I have chosen
to include them in the second edition, in cooperation with Dr. Richard C.
Waters, as appendices A and B, in order to make these ideas available to the
Lisp community. In my judgement these proposals address an area of language
design not otherwise covered by Common Lisp and are likely to have practical
value even if they are never adopted as part of a formal standard.
Some new material in this book has nothing to do with the work of X3J13. In
many places I have added explanations, clarifications, new examples, warnings,
and tips on writing portable code. Appendix C contains a piece of code that may
help in understanding the backquote syntax.
This second edition, unlike the first edition, also includes a few diagrams to
pep up the text. However, there are absolutely no new jokes, and very few
outright lies.
-------------------------------------------------------------------------------
[next] [up] [previous] [contents] [index]
Next: Acknowledgments SECOND EDITION Up: Common Lisp the Language Previous:
Contents
-------------------------------------------------------------------------------
-------------------------------------------------------------------------------
AI.Repository@cs.cmu.edu